package com.company.ThreadDemo;

import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.TimeUnit;

/**
 * 作者：13687
 * 日期：2017/6/4
 * 项目：ThreadPoolsDemo
 * 描述：多线程执行同一个任务
 * 线程不安全了
 */
public class ThreadDemo2 {
	public static void main(String[] args) throws Exception{
		List<Thread> threads = new ArrayList<Thread>();
		//注意这里，我们在外面new出一个任务来，让100个线程都来执行这个任务
		CountRunnable work = new CountRunnable();
		for(int i=1 ; i<101; i++){
			Thread thread = new Thread(work,"Thread"+i);
			threads.add(thread);
		}
		for(Thread t : threads){
			t.start();
		}
		for(Thread t : threads){
			t.join();
		}
		System.out.println("所有线程执行完毕");

	}
	public static class CountRunnable implements Runnable{
		private int sum;
		@Override
		public void run() {
			for(int i=1 ; i<11 ; i++){
				try {
					//在这里我们让每个工人每进行一次加法运算后就休息1ms，这样会使得结果明显
					TimeUnit.MILLISECONDS.sleep(1);
				} catch (InterruptedException e) {
					e.printStackTrace();
				}
				sum = sum+i;
			}
			System.out.println(Thread.currentThread().getName()+"执行完毕 sum="+sum);
		}

	}
}
